package com.arpa.wms.mapper;

import com.arpa.ntocc.common.domain.dto.PartyGroupDTO;
import com.arpa.ntocc.common.domain.vo.PartyGroupVO;
import com.arpa.wms.domain.dto.PointsItemDTO;
import com.arpa.wms.domain.dto.WarehouseDTO;
import com.arpa.wms.domain.entity.PointsItem;
import com.arpa.wms.domain.entity.PointsSetting;
import com.arpa.wms.domain.vo.PointsItemVO;
import com.arpa.wms.domain.vo.WarehouseVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import io.lettuce.core.dynamic.annotation.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 积分明细
 * </p>
 *
 * @author wangdong
 * @since 2021-07-05
 */
public interface PointsItemMapper extends BaseMapper<PointsItem>{

    /**
     * 查询积分明细列表
     * @param pointsItemDTO
     * @return
     */

    List<PointsItemVO> queryList(PointsItemDTO pointsItemDTO);


    /**
     * 查询合计,包含总数
     * @param pointsItemDTO
     * @return
     */
    PointsItemVO queryListSum(PointsItemDTO pointsItemDTO);


    /**
     * 查询员工积分积分
     * @param pointsItemDTO
     * @return
     */

    List<PointsItemVO> queryStaffList(PointsItemDTO pointsItemDTO);


    /**
     * 查询单个员工可用积分
     * @param pointsItemDTO
     * @return
     */
    BigDecimal queryAvailablePoints(PointsItemDTO pointsItemDTO);




    /**
     * 查询用户表合计
     * @param pointsItemDTO
     * @return
     */
    PointsItemVO queryStaffListSum(PointsItemDTO pointsItemDTO);


    /**
     * 获取机构下前三名的积分排名
     * @param groupCode 机构code
     * @return
     */
    List<String> queryPointsRanking(String groupCode,String warehouseCode);


    /**
     * 保存
     * @param pointsItem
     * @return
     */
    boolean save(PointsItem pointsItem);



    /**
     * 获取积分设置奖励
     * @param groupCode
     * @param warehouseCode
     * @return
     */
    List<PointsSetting> queryPointsSetting(@Param("groupCode")String groupCode,@Param("warehouseCode")String warehouseCode);

    /**
     * 获取员工可用积分
     *
     * @param partyCode 员工标识
     * @return java.math.BigDecimal
     * @author liuxr
     * @date 2021/7/9 14:11
     */
    BigDecimal canUsePoints(@Param("partyCode") String partyCode,@Param("groupCode")String groupCode);


    List<PointsItemVO> queryPartyList(PointsItemDTO pointsItemDTO);

    List<PointsItemVO> queryWarehouseList(PointsItemDTO pointsItemDTO);
}
